package q334_increasingTriplet;

public class Solution {
    /*
    利用贪心的方法来解决该问题，首先定义var1为第一个数字 var2为无穷大
    当我们找到第一个大于var1的数字时 var2变为该数字
    然后一旦能够找到大于var2的 即返回true
    如果发现有一个var1 到 var2之间的
    显然 当var1和var2越小 我们就更能够找到第三个数
    所以我们此时要把var2更新为这个数
    如果找到一个小于var1的则同样将var1也更新
    那么此时出现了一个这样的情况
    老var1 。。。 老var2 。。。 新var1 。。。
    其实不难理解 我们无非
    1 找到一个大于var2的 也能够满足 老var1 - 老var2 - 该数字 是递增子序列
    2 找到一个新var1 和 老 var2之间的 那么此时更新var2 又变成了普通的情况
    3 找到一个比新var1更小的 再次更新 进入循环
     */
    public boolean increasingTriplet(int[] nums) {
        int var1 = nums[0], var2 = Integer.MAX_VALUE;
        for (int num : nums) {
            if (num > var2) {
                return true;
            } else if (num > var1) {
                var2 = num;
            } else {
                var1 = num;
            }
        }
        return false;
    }
}
